﻿using System;
using System.Web.UI.WebControls;
using vudu.EnlaceDatos.SqlServer;
using vudu.Logica.Clases;

namespace vudu.PaginasWeb.G1EsquemaEvaluacion
{
    public partial class EliminarEsquemaEvaluacion : System.Web.UI.Page
    {
        private Profesor profesor = new Profesor();
        private Evaluacion evaluacion = new Evaluacion();

        protected void Page_Load(object sender, EventArgs e)
        {
            LlenarCabecerasTablaInformacionSecciones();
            //Cuando hagan la integracion quitar este atributo este solo se pasa por la variable session
            profesor = (Profesor) Session["usuario"];
            //profesor.Cedula = 18011724;
            //profesor.Nombre = "Carlo";
            //profesor.Apellido = "Magurno";

            //esto no se quita en la integracion
            InFormacionProfesor.Text = "Profesor(a) : " + profesor.Nombre + " " + profesor.Apellido;
            CargarInformacionTablaEsquemaEvaluacion();

        }

        /// <summary>
        /// Funcion que sirve para insertar las cabeceras a la table de informacion de esquema de evaluacion.
        /// </summary>
        public void LlenarCabecerasTablaInformacionSecciones()
        {
            // Creamos un nuevo registro para la tabla
            TableRow registroTabla = new TableRow();
            InformacionEsquemasEvaluacion.Rows.Add(registroTabla);
            // Creamos una celda para esta tabla.
            TableCell celdaTabla = new TableCell();
            celdaTabla.Width = 200;
            celdaTabla.HorizontalAlign = HorizontalAlign.Center;
            registroTabla.Cells.Add(celdaTabla);
            // Creamos un WebControl de tipo "LABEL" y se lo aderimos a la celda.
            System.Web.UI.WebControls.Label labelCabecera = new Label();
            labelCabecera.Text = "Materia";
            celdaTabla.Controls.Add(labelCabecera);

            //Repetimos el procedimiento hasta llenar nuestra tabla.
            celdaTabla = new TableCell();
            celdaTabla.Width = 100;
            celdaTabla.HorizontalAlign = HorizontalAlign.Center;
            registroTabla.Cells.Add(celdaTabla);
            labelCabecera = new Label();
            labelCabecera.Text = "Seccion";
            celdaTabla.Controls.Add(labelCabecera);

            celdaTabla = new TableCell();
            celdaTabla.Width = 200;
            celdaTabla.HorizontalAlign = HorizontalAlign.Center;
            registroTabla.Cells.Add(celdaTabla);
            labelCabecera = new Label();
            labelCabecera.Text = "Opcion";
            celdaTabla.Controls.Add(labelCabecera);
        }

        /// <summary>
        /// Funcion para cargar la informacion de esquemas de evaluacion en profesores.
        /// </summary>
        public void CargarInformacionTablaEsquemaEvaluacion()
        {
            try
            {
                //Recorremos la lista de todas las secciones de un profesor.
                foreach (SeccionMateria seccionMateria in evaluacion.ConsultarEsquemasDeEvaluacionSinNotasProfesor(profesor))
                {
                    // Creamos un nuevo registro para la tabla
                    TableRow registroTabla = new TableRow();
                    InformacionEsquemasEvaluacion.Rows.Add(registroTabla);

                    // Creamos una celda para esta tabla.
                    TableCell celdaTabla = new TableCell();
                    registroTabla.Cells.Add(celdaTabla);
                    // Creamos un WebControl de tipo "LABEL" y se lo aderimos a la celda.
                    System.Web.UI.WebControls.Label labelRegistro = new Label();
                    labelRegistro.Text = seccionMateria.Materia.Nombre;
                    celdaTabla.Controls.Add(labelRegistro);

                    celdaTabla = new TableCell();
                    celdaTabla.HorizontalAlign = HorizontalAlign.Center;
                    registroTabla.Cells.Add(celdaTabla);
                    // Creamos un WebControl de tipo "LABEL" y se lo aderimos a la celda.
                    labelRegistro = new Label();
                    labelRegistro.Text = "00" + seccionMateria.Codigo.ToString();
                    celdaTabla.Controls.Add(labelRegistro);

                    celdaTabla = new TableCell();
                    celdaTabla.HorizontalAlign = HorizontalAlign.Center;
                    registroTabla.Cells.Add(celdaTabla);
                    // Creamos un WebControl de tipo "BUTTON" y se lo aderimos a la celda.
                    System.Web.UI.WebControls.Button botonEliminarEsquema = new Button();
                    botonEliminarEsquema.CssClass = "boton";
                    botonEliminarEsquema.ID = seccionMateria.IdSeccionMateria.ToString();
                    botonEliminarEsquema.Text = "Eliminar Esquema";
                    botonEliminarEsquema.OnClientClick =
                        "return confirm('¿Está seguro que desea eliminar este Esquema de Evaluación?')";
                    botonEliminarEsquema.Click += new EventHandler(AccionBotonEliminarEsquema);
                    celdaTabla.Controls.Add(botonEliminarEsquema);
                }
            }
            catch (Exception)
            {
                MensajeDeTransaccion.Text = "Operacion Fallida : No se pudo establecer conexión con la Base de Datos";
                MensajeDeTransaccion.CssClass = "transaccionFallida";
                MensajeDeTransaccion.Visible = true;
            }
        }

       
        /// <summary>
        /// Ejecuta la accion del boton para eliminar un esquema de evaluacion
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void AccionBotonEliminarEsquema(Object sender, EventArgs e)
        {
            //Convertimos el objeto enviado en boton, para poder obtener su id.
            try
            {
                Button clickedButton = (Button)sender;
                SqlServerEvaluacion sqlServerEvaluacion = new SqlServerEvaluacion();

                SeccionMateria seccionMateria = new SeccionMateria();
                seccionMateria.IdSeccionMateria = Convert.ToInt32(clickedButton.ID);

                evaluacion.EliminarEsquemaDeEvaluacion(seccionMateria);
                MensajeDeTransaccion.Text = "El esquema de evaluacion se elimino con exito";
                MensajeDeTransaccion.CssClass = "transaccionExitosa";
                MensajeDeTransaccion.Visible = true;

                InformacionEsquemasEvaluacion.Rows.Clear();

                LlenarCabecerasTablaInformacionSecciones();
                CargarInformacionTablaEsquemaEvaluacion();

            }
            catch (Exception)
            {
                MensajeDeTransaccion.Text = "Operacion Fallida";
                MensajeDeTransaccion.CssClass = "transaccionFallida";
                MensajeDeTransaccion.Visible = true;
            }

        }
    }
}